// 类型别名用来给一个类型起个新名称。
type Name = string;
type NameResolver = () => string;
type NameOrNameResolver = Name | NameResolver;
function getName(n: NameOrNameResolver) {
    if (typeof n === 'string') return n;
    return n();
}

// console.log(getName('zs'));
// console.log(getName(() => 'zs'));
// 上例中，我们使用type创建类型别名。
// 类型别名常用于联合类型。

// 字符串字面量类型
type EventNames = 'click' | 'scroll' | 'mousemove';
function handleEvent(ele: Element, event: EventNames) {}
handleEvent(document.getElementById('app'), 'click'); // 没问题
handleEvent(document.querySelector('app'), 'dbclick'); // 报错，类型“"dblclick"”的参数不能赋给类型“EventNames”的参数。
// 上例中，我们使用type定义了一个字符串字面量类型EventNames，它只能取三种字符串中的一种。
// 注意,类型别名与字符串字面量类型都是type进行定义的。

export {};
